package org.base23.video.domain.dto;

import lombok.Data;
import com.fasterxml.jackson.annotation.JsonIgnore;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

/**
 * AI指导消息
 */
@Data
public class AiGuidanceMessage {
    
    /**
     * 消息ID
     */
    private String messageId;
    
    /**
     * 消息发送者类型
     */
    private SenderType senderType;
    
    /**
     * 消息内容
     */
    private String content;
    
    /**
     * 消息时间戳
     */
    private String timestamp;
    
    /**
     * 设置消息时间戳
     */
    public void setTimestamp(LocalDateTime timestamp) {
        this.timestamp = timestamp != null ? timestamp.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")) : null;
    }
    
    /**
     * 获取时间戳的LocalDateTime对象
     */
    @JsonIgnore
    public LocalDateTime getTimestampAsLocalDateTime() {
        return timestamp != null ? LocalDateTime.parse(timestamp, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")) : null;
    }
    
    /**
     * 消息类型
     */
    private MessageType messageType;
    
    /**
     * 相关的时间戳（用于关联分析结果中的特定时间点）
     */
    private Double relatedTimestamp;
    
    /**
     * 相关的问题帧ID
     */
    private Integer relatedFrameId;
    
    /**
     * 消息状态
     */
    private MessageStatus status;
    
    /**
     * 发送者类型枚举
     */
    public enum SenderType {
        USER,           // 用户
        AI_ASSISTANT,   // AI助手
        SYSTEM          // 系统
    }
    
    /**
     * 消息类型枚举
     */
    public enum MessageType {
        TEXT,               // 普通文本
        QUESTION,           // 问题
        ANSWER,             // 回答
        SUGGESTION,         // 建议
        INSTRUCTION,        // 指导
        ANALYSIS_REFERENCE  // 分析结果引用
    }
    
    /**
     * 消息状态枚举
     */
    public enum MessageStatus {
        SENT,       // 已发送
        DELIVERED,  // 已送达
        READ        // 已读
    }
    
    /**
     * 构造函数
     */
    public AiGuidanceMessage() {
        this.setTimestamp(LocalDateTime.now());
        this.status = MessageStatus.SENT;
    }
    
    /**
     * 创建用户消息
     */
    public static AiGuidanceMessage createUserMessage(String content) {
        AiGuidanceMessage message = new AiGuidanceMessage();
        message.setSenderType(SenderType.USER);
        message.setContent(content);
        message.setMessageType(MessageType.QUESTION);
        return message;
    }
    
    /**
     * 创建AI回复消息
     */
    public static AiGuidanceMessage createAiMessage(String content, MessageType type) {
        AiGuidanceMessage message = new AiGuidanceMessage();
        message.setSenderType(SenderType.AI_ASSISTANT);
        message.setContent(content);
        message.setMessageType(type);
        return message;
    }
} 